package main

import (
	"fmt"
	"strconv"
)

/*
函数，可以当前变量进行传递和定义
*/
func main() {
	// 1.无参void 函数值
	d1 := demo1
	d1()

	// 2.传参返回值 函数值
	d2 := demo2
	d2Res := d2(666)
	fmt.Println(d2Res)

	// 初始化函数值
	var f func(int) int
	if f != nil {
		fmt.Println(f(1))
	} else {
		fmt.Println("函数定义为null")
	}

	// 3.函数无法对比
	//eq1 := demo1
	//eq2 := demo1
	//Invalid operation: eq1 == eq2 (the operator == is not defined on func())
	//fmt.Println(eq1 == eq2)

}

func demo1() {
	fmt.Println("demo1")
}

func demo2(id int) string {
	return strconv.Itoa(id)
}
